<?php
namespace app\yangxt_forum\controller;
use think\Controller;
class Index extends Controller
{
    // 1803010340 检查登录状态
    public function check()
    {
        if (!session("?unick")) 
        {
            $this->error("您尚未登录！");
        }
    }
    public function showSec()
    {
        $re = db("section")
            ->order("sname desc")
            
            ->select();
        return ($re); 
    }
    // 1803010340 渲染论坛门户页面
     public function index()
    {
        // 查询板块
        $re = $this->showSec();
        // 查询最高十个帖子
        $re_mes_top = db('mes')
            ->order('mcreateat desc')
            ->limit(10)
            ->select();
        $adv=db('adv')
            ->where('atype',0)        
            ->where('acheck',1)
            ->where('astop',0)
            ->select();
        $advshow=db('adv')
        ->where('atype',1)
        ->where('acheck',1)
        ->where('astop',0)
        ->select();
        // 传递参数给模板页面，渲染模板页面
        return view("",["sec"=>$re,'topMes'=>$re_mes_top,'adv'=>$adv,'advshow'=>$advshow]);
    }
    // 1803010340 渲染帖子列表页面
    public function view($sid = 1)
    {
        // 查询板块
        $re1 = $this->showSec();
        // 读取当前板块的名字
        foreach ($re1 as $key => $value) {
            if ($value["sid"] == $sid) 
            {
                $thisSec = $value["sname"];
                break;
            }
        }
        // 查询指定板块的帖子
        $re2 = db("")
            ->view("mes","mid,mtitle,mcreateat,unick")
            ->view("user","uimg","mes.unick=user.unick")
            ->where("sid",$sid)
            
            ->order("mcreateat desc,mid")
            ->paginate(5);
        // 获取分页页码
        $page = $re2->render();
        // 传递参数给模板页面，渲染模板页面
        return view("",["sec"=>$re1,"mes"=>$re2,"page"=>$page,"thisSec"=>$thisSec]);
    }
    // 1803010340 渲染帖子发布页面
    public function post()
    {
        // 验证登录状态
        $this->check();
        
        $user=db('user')
        ->where('unick',session('unick'))
   
        ->find();
        if (!$user) {
            $this -> error("用户已被禁言，无法发帖");
            exit();
        }
        // 查询板块
        $re = $this->showSec();
        // 传递参数给模板页面，渲染模板页面
        return view("",["sec"=>$re]);
    }
    // 1803010340 执行发帖处理
    public function doPost()
    {
        // 验证登录状态
        $this->check();
      
        // 设置写权限的用户
        config('database.username','change');
        config('database.password','66666666'); 
       // 准备数据
       $data = [
            'mtitle' => input("mtitle"),
            'mcontent' => input("mcontent"),
            'unick' => session("unick"),
            'mcreateat' => time(),
            'sid' => input("sid")
       ];
        // 构造查询构造器
       $re = db("mes")
           ->insert($data);
        // 提示，跳转
        if($re == 1)
        {
            // 成功
            $this->success("发帖成功！",url("yangxt_forum/index/view",["sid"=>input("sid")]));
        }
        else
        {
            $this->erroe("发帖失败！");
        }
    }
    // 1803010340 渲染帖子详细页面
    public function detail($mid = 1)
    {
        // 查询板块
        $re1 = $this->showSec();
        // 帖子视图查询
        $re2 = db()
             ->view("mes","mtitle,mcontent,unick,mcreateat")
             ->view("user","uimg","mes.unick=user.unick")
             ->view("section","sname","mes.sid=section.sid")
             ->where("mes.checkdel",0)
             ->where("mid",$mid)
             ->find();
        // 回复的视图查询
        $re3 = db()
             ->view("res","rcontent,unick,rcreateat")
             ->view("user","uimg","res.unick=user.unick")
             ->where("mid",$mid)
             ->where("checkdel",0)
             ->paginate(5);
        // 获取分页页码
        $page = $re3->render();
        // 传递参数给模板页面，渲染模板页面
        return view("",["sec"=>$re1,"mes"=>$re2,"res"=>$re3,"page"=>$page]);
    }
    // 1803010340 执行回复帖子处理
    public function doRes($mid = 1)
    {
        // 验证登录状态
        $this->check();
        // 设置写权限的用户
        config('database.username','change');
        config('database.password','66666666');
        // 准备数据
        $data = [
            'rcontent' => input('rcontent'),
            'unick' => session('unick'),
            'rcreateat' => time(),
            'mid' => $mid
        ];

        $user=db('user')
        ->where('unick',session('unick'))
        ->where('ulimit',0)
        ->find();
        if (!$user) {
            $this -> error("用户已被禁言，无法回复");
            exit();
        }else{
            $re = db("res")
            ->insert($data);
        }
         // 提示，跳转
         if($re == 1)
         {
            // 成功
            $this->success("回复成功！");
         }
         else
         {
           $this->error("回复失败！");
         }
        
    }
    // 1803010340 渲染修改密码表单
    public function changePa()
    {
        // 验证登录状态
        $this->check();
        // 查询板块
        $re = $this->showSec();
        // 传递参数给模板页面，渲染模板页面
        return view("",["sec"=>$re]);
    }
    // 1803010340 执行修改密码处理
    public function doChangePa(){
        $this -> check();
       config("database.username","change");
       config("database.password","66666666");
       $user=session('unick');
        $oldpa=md5(input('opasswd'));
        $newpa=md5(input('npasswd'));
        $re = db('user')
            ->where('unick',$user)
            ->where('upa',$oldpa)
            ->setField('upa',$newpa);
         if ($re==1) {
            $this -> success("密码修改成功自动注销","yangxt_forum/index/logOut");

         }
         else
         {
            $this -> error("密码修改失败","yangxt_forum/index/changepa");
         }
    }
    // 1803010340 渲染上传用户头像表单
    public function me()
    {
        // 验证登录状态
        $this->check();
        // 查询板块
        $re = $this->showSec();
        // 传递参数给模板页面，渲染模板页面
        return view("",["sec"=>$re]);
    }
    // 1803010340 执行上传（更新头像）
    public function upMe()
    {
        // 1.验证登录状态
        $this->check();
        // 2.动态配置change帐号
        config('database.username','change');
        config('database.password','66666666');
        // 3.提取文件
        $file = request()->file("uimg");
        // 4.保存到指定目录
        // $path = ROOT_PATH."/public/static/img/portrait/";
        // $info = $file->move($path);
        if($file)
        {
            // 上传限制：100KB，图片格式：.jpg、.jpeg、.gif、.png
            $info = $file
                    ->validate(['size'=>102400,'ext'=>'jpg,gif,jpeg,png'])
                    ->move(ROOT_PATH . "public/static/img/portrait/");
            if ($info) {
                // 获取文件保存信息
                $path = $info->getSaveName();
                
                if (session("uimg")!="portrait/1.jpg")
                {
                    $old = ROOT_PATH . "public/static/img/" . session("uimg");
                }
                else
                {
                    $old = "";
                }
                // 查询构造器
                $re = db("user")
                    ->where("unick",session("unick"))
                    ->update(["uimg"=>$path]);
                if ($re == 1) 
                {
                    // 修改当前用户的头像信息
                    session("uimg",$path);
                    // 删除旧头像
                    if (is_file($old)) 
                    {
                        unlink($old);
                    }

                    // 成功，跳转
                    $this->success("头像更新成功！","yangxt_forum/index/index");
                }
                else
                    {
                        // 更新失败
                        $this->error("头像更新失败，请稍后再试","yangxt_forum/index/index");
                    }
            }
            else
            {
                $this->error("上传失败：".$file->getError());
            }
        }
        else
        {
            $this->error("头像更新失败！");
        }

    }
    // 1803010340 注销
    public function logOut()
    {
        // 检查登录状态
        $this->check();
        // 清除
        session("unick",null);
        session("uimg",null);
        // 跳转
        $this->success("注销成功！","yangxt_forum/index/index");
    }
}
